/**
 * 项目名：admin
 * 包名：com.xuebang.admin.mapper
 * 文件名：ColumnMapper.java
 * 版本信息：@version 1.0
 * 日期：2014-1-19-上午10:50:55
 */
package com.xuebang.admin.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectKey;
import org.apache.ibatis.annotations.Update;

import com.xuebang.admin.entity.MenuColumn;

/**
 * 项目名称：admin 类名称：ColumnMapper 类描述： 创建人：xuyang 创建时间：2014-1-19 上午10:50:55
 * 修改人：xuyang 修改时间：2014-1-19 上午10:50:55 修改备注：
 * 
 * @version
 */
public interface ColumnMapper extends BaseMapper<MenuColumn> {

	/**
	 * 加载指定id的栏目
	 */
	@Select("select * from heilongjiang.column where id=#{intCid}")
	public MenuColumn loadColumn(int intCid);

	/**
	 * 加载所有的一级栏目
	 */
	@Select("select * from heilongjiang.column where parent_id is null order by sort_way,id")
	public List<MenuColumn> loadFstColumns();

	/**
	 * 加载所有的关联栏目中存在的一级栏目
	 */
	public List<MenuColumn> loadCheckedFstColumns(
			@Param("arrRelatedColumns") String[] arrRelatedColumns);

	/**
	 * 加载指定栏目的子栏目
	 */
	@Select("select * from heilongjiang.column where parent_id=#{intCid} order by sort_way,id")
	public List<MenuColumn> loadChildColumns(int intCid);

	/**
	 * 加载指定栏目的子栏目
	 */
	public List<MenuColumn> loadCheckedChildColumns(
			@Param("intCid") int intCid,
			@Param("arrRelatedColumns") String[] arrRelatedColumns);

	/**
	 * 通过名字查找
	 * 
	 * @param
	 */
	@Select("select * from heilongjiang.column where name = #{strMenuColumnName}")
	public List<MenuColumn> searchByName(String strMenuColumnName);

	/**
	 * 通过名字查找
	 * 
	 * @param
	 */
	public List<MenuColumn> searchCheckedByName(
			@Param("strMenuColumnName") String strMenuColumnName,
			@Param("arrRelatedColumns") String[] arrRelatedColumns);
	
	/**
	 * 增加栏目
	 */
	@Insert("insert into heilongjiang.column(name,parent_id,menu_type,sort_way,seo_keyword,seo_description)" +
			" values(#{name},#{parentId},#{menuType},#{sortWay},#{seoKeyword},#{seoDescription})")
	@SelectKey(statement = "select last_insert_id()", keyProperty = "id", before = false, resultType = Integer.class)
	int insertColumn(MenuColumn menuColumn);

	/**
	 * 更新栏目
	 */
	@Update("update heilongjiang.column set name=#{name},menu_type=#{menuType},parent_id=#{parentId}" +
			",sort_way=#{sortWay},seo_keyword=#{seoKeyword},seo_description=#{seoDescription} where id=#{id}")
	int updateColumn(MenuColumn menuColumn);
	
	/**
	 * 删除栏目
	 * 
	 * @param 
	 * 		strColumnIDs
	 */
	public void deleteColumns(@Param("strColumnIDs")String[] strColumnIDs);
	
	/**
	 * 修改关联栏目
	 * 
	 * @param lngGroupID 栏目id
	 * @param strRelatedColumns 关联栏目
	 */
	@Update(" update oper_group_column set column_ids=#{strRelatedColumns} where group_id=#{lngGroupID}")
	public void updateRelatedColumns(@Param("lngGroupID")Long lngGroupID,@Param("strRelatedColumns")String strRelatedColumns);
}